namespace Xmef.Engine.Internal
{
    using System;
    using Xmef.Interfaces;

    internal interface IPluginContextInternal : IPluginIdentity
    {
        bool Load();
        IPluginObject<T> Load<T>(Type type);
        bool Unload();
        IPluginObject<T> Unload<T>(Type type);
        void Unload(IPluginObjectInternal obj);

        IPluginAssemblyInternal Assembly { get; }

        IXmlPluginConfiguration Configuration { get; }

        IPluginHostInternal Host { get; }

        bool IsLoaded { get; }
    }
}

